package com.demarc.pesquisas.web.validator;

import java.io.Serializable;

import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.validator.FacesValidator;
import javax.faces.validator.Validator;
import javax.faces.validator.ValidatorException;

import com.demarc.pesquisas.infraestrutura.mensagem.MensagemJsfUtils;
import com.demarc.pesquisas.infraestrutura.web.jsf.JsfUtil;
import com.demarc.pesquisas.negocio.util.MascaraUtils;

@FacesValidator(value = "MascaraValidator")
public class MascaraValidator implements Validator, Serializable {

	public static final String MASCARA_MESSAGE_ID = "com.demarc.pesquisas.web.validator.MascaraValidator.MASCARA";

	@Override
	public void validate(FacesContext context, UIComponent component,
			Object value) throws ValidatorException {

		String mascara = MascaraUtils.removerFormato(context.getApplication()
				.evaluateExpressionGet(context, "#{cc.attrs.mascara}",
						String.class));

		if (value instanceof String && ((String) value).length() > 0
				&& ((String) value).length() != mascara.length()) {

			FacesMessage facesMessage = MensagemJsfUtils.criarFacesMessage(
					FacesMessage.SEVERITY_ERROR, MASCARA_MESSAGE_ID,
					JsfUtil.getLabel(context, component));

			throw new ValidatorException(facesMessage);
		}
	}
}
